Translation of single and multi-byte characters is a common and well know procedure within computer systems of many types. For example, computer systems routinely translate between characters of the ASCII codeset and characters of the EBCDIC codeset. In general, a number of differing methods exist for the translation of characters between differing codesets. Practice has established that each of these methods may be more, or less, optimal for a particular translation. Thus, for small codesets, such as the ASCII codeset, translation may be accomplished using simple translation tables. These translation tables map characters in the source codeset to equivalent characters in the target codeset and result in a translation method which is both relatively fast and relatively simple. Unfortunately, application of this fast and simple methodology to large codesets, such as the Kanji codeset, results in translation tables which may be intractably large. As a result, when large codesets are involved, it is often necessary to use an alternate translation method which is both more complex and more time consuming than simple translation tables.
Based on the foregoing, it is easy to appreciate that there is a necessity for a variety of translation methods. Unfortunately, the differing needs of different translations has encouraged the implementation of translation systems in a piecemeal and haphazard fashion. As a result, it is generally the case that multiple distinct translation systems exists within a single computer system where each translation system will be directed at translation between a small number of differing codesets.
The existence of multiple translation system within a single computer system has several disadvantages. For example, replication of the same translation method results in wasted systems resources, such as computer memory and disk space. In addition, replication of the same translation method is generally expensive wastes programmer time as the method is reimplemented one or more times. Additionally, implementation of multiple translation systems may result in an incomplete translation capability. As an example, assume that a first process includes a translation from an idealized codeset A to an idealized codeset B. Assume as well that a second process includes a translation from the idealized codeset B to an idealized codeset C. Under these circumstances, if a process requires a translation from codeset A to codeset C, a new translation method will have to be constructed. This, in spite of the fact that a method already exist in the system which might be used to perform the desired translation.
A separate disadvantage associated with traditional methodologies for translation is the difficulty associated with the addition of new translations to the system or modification of existing translations. More specifically, when multiple translation systems exist within multiple parts of a computer system, there may be no easy way to add a new translation that is generally available within the computer system. Instead, addition of a new translation often requires that the translation be added separately to multiple parts of the computer system. Such an approach makes it difficult to maintain the computer system.